管理者権限を与えつつIAMユーザーまわりの操作だけ禁止するIAMポリシー
はじめに
こんにちは。大阪オフィスの林です。
タイトルの通りなのですが本エントリは、AWS環境で各種リソースやサービスに対する管理者権限を与えつつも、IAMユーザーの作成や変更に関する操作を禁じたいというピンポイントのユースケースにお答えする内容となっています。
デフォルトのポリシーでIAMReadOnlyAccess
もありますが、ロールやポリシーの操作にも制限が掛かってしまうので、IAMユーザーの作成、変更に対する操作だけを禁止したいというユースケースに本エントリを参考にして頂ければと思います。
やってみた
ポリシー作成
IAMのダッシュボード左メニューから「ポリシー」-「ポリシーの作成」を選択します。
「JSON」タブから下記のJOSNをコピペして次のステップに進みます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "*", "Resource": "*" }, { "Effect": "Deny", "Action": [ "iam:AddUserToGroup", "iam:RemoveUserFromGroup", "iam:UpdateUser", "iam:PutUserPermissionsBoundary", "iam:PutUserPolicy", "iam:DeleteUserPolicy", "iam:AttachUserPolicy", "iam:DeleteUser", "iam:DeleteUserPermissionsBoundary", "iam:DetachUserPolicy", "iam:CreateUser" ], "Resource": "*" } ] }
作成したポリシーを割り当てたユーザーやロールから、ポリシー自体を変更されてしまうと元も子もないので、作成したポリシーの改変も抑止しておきます。作成したポリシーを選択しARNを控えておきます。その後「ポリシーの編集」を選択します。
下記のセクションを追加して「ポリシーの確認」を選択します。※「Resource」の中盤12桁の数字はAWSアカウントIDで、末尾はポリシー名です。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "*", "Resource": "*" }, { "Effect": "Deny", "Action": [ "iam:AddUserToGroup", "iam:RemoveUserFromGroup", "iam:UpdateUser", "iam:PutUserPermissionsBoundary", "iam:PutUserPolicy", "iam:DeleteUserPolicy", "iam:AttachUserPolicy", "iam:DeleteUser", "iam:DeleteUserPermissionsBoundary", "iam:DetachUserPolicy", "iam:CreateUser" ], "Resource": "*" }, //下記セクション追加時にカンマも忘れずに。 { "Effect": "Deny", "Action": [ "iam:CreatePolicyVersion" ], "Resource": "arn:aws:iam::123456789012:policy/not-iam-user-operation" //「123456789012」はAWSアカウントID12桁です。 //「not-iam-user-operation」はポリシー名です。 } ] }
動作確認
上記で作成したIAMポリシーをIAMユーザーもしくはIAMロールに割り当てて動作を確認していきます。
IAMユーザーを作成してみる
上記で作成したIAMポリシーを割り当てたユーザー/ロールで、IAMユーザーを作成してみます。
IAMユーザーを削除してみる
本エントリ冒頭で作成したIAMポリシーを割り当てたユーザー/ロールで、IAMユーザーを削除してみます。
ポリシーを追加してみる
本エントリ冒頭で作成したIAMポリシーを割り当てたユーザー/ロールで、IAMユーザーにポリシーをアタッチしてみます。
権限がないため、IAMユーザーへのポリシー追加が出来ませんでした。
ポリシーを変更してみる
本エントリ冒頭で作成したIAMポリシーを割り当てたユーザー/ロールで、割り当てられているポリシー自体の変更をしてみます。
権限がないため、ポリシーの改変が出来ませんでした。なお、割り当てられているポリシーに対して変更を抑止しているので、他のポリシーを新規に作成したり、新規で作成したポリシーを変更することは可能です。
ポリシーを削除してみる
本エントリ冒頭で作成したIAMポリシーを割り当てたユーザー/ロールで、IAMユーザーに割り当てられているポリシーを削除してみます。
権限がないため、IAMユーザーからポリシーの削除が出来ませんでした。
まとめ
小ネタのようなピンポイントなエントリとなりましたが、要件にフィットする方の参考になりましたら幸いです!
以上、大阪オフィスの林がお送りしました!